package com.smedi.ismedi.personnel.api.feign;

import com.smedi.ismedi.personnel.api.dto.request.*;
import com.smedi.ismedi.personnel.api.dto.response.*;
import com.smedi.ismedi.personnel.api.dto.response.resp.OrganizationAssignmentResp;
import com.smedi.ismedi.personnel.api.dto.response.resp.PersonDetailResp;
import com.smedi.ismedi.personnel.api.dto.response.resp.PersonResp;
import com.smedi.ismedi.web.starter.common.PaginationData;
import com.smedi.ismedi.web.starter.common.ResponseData;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Api(tags = {"人员管理接口"})
@FeignClient(name = "ismedi-personnel")
@RequestMapping(value = "/api/v1/personnel")
public interface RemotePersonCoreFeignApi {
    /**
     * 保存内部员工信息
     *
     * @param
     * @return
     */
    @ApiOperation(httpMethod = "POST", value = "保存项目员工信息")
    @PostMapping(value = "/external/save")
    @Deprecated
    ResponseData<PersonResponse> postSaveExternalPerson(@Validated @RequestBody ExternalPersonRequest externalPersonRequest);

    /**
     * 保存企业员工信息
     *
     * @param
     * @return
     */
    @ApiOperation(httpMethod = "POST", value = "保存企业员工信息")
    @PostMapping(value = "/internal/save")
    @Deprecated
    ResponseData<PersonResponse> postSaveInternalPerson(@Validated @RequestBody InternalPersonRequest internalPersonRequest);

    /**
     * 编辑 人员
     *
     * @param
     * @return
     */
    @ApiOperation(httpMethod = "POST", value = "编辑 人员")
    @PostMapping(value = "/edit")
    ResponseData<Boolean> editPerson(@Validated @RequestBody PersonEditRequest personEditRequest);

    /**
     * 企业组织页面查看企业组织下的人员信息表格
     *
     * @param offset
     * @param pageSize
     * @param hrOrganizationId
     * @param lastName
     * @param userName
     * @param employeeNum
     * @param containHrOrganizationChildren
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "企业组织页面查看企业组织下的人员信息表格")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "offset", value = "页码", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "pageSize", value = "每页行数", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "hrOrganizationId", value = "企业组织id", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "lastName", value = "姓名", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "userName", value = "登录名", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "employeeNum", value = "工号", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "containHrOrganizationChildren", value = "是否包含下级", dataType = "boolean", dataTypeClass = Boolean.class)
    })
    @GetMapping(value = "/queryInternalPersonInfoPagination")
    ResponseData<PaginationData<InternalPersonAssignmentResponse>> getQueryInternalPersonInfoPagination(@RequestParam("offset") Long offset,
                                                                                                        @RequestParam("pageSize") Long pageSize,
                                                                                                        @RequestParam("hrOrganizationId") Long hrOrganizationId,
                                                                                                        @RequestParam(value = "lastName", required = false) String lastName,
                                                                                                        @RequestParam(value = "userName", required = false) String userName,
                                                                                                        @RequestParam(value = "employeeNum", required = false) String employeeNum,
                                                                                                        @RequestParam(value = "containHrOrganizationChildren", required = false) boolean containHrOrganizationChildren);

    /**
     * 查看企业组织下的人员信息表格
     *
     * @param offset
     * @param pageSize
     * @param lastName
     * @param employeeNum
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "企业人员选择模态框查询")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "offset", value = "页码", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "pageSize", value = "每页行数", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "lastName", value = "姓名", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "employeeNum", value = "工号", dataType = "String", dataTypeClass = String.class)
    })
    @GetMapping(value = "/queryInternalPersonPickupPagination")
    ResponseData<PaginationData> getQueryInternalPersonPickupPagination(@RequestParam("offset") Long offset,
                                                                        @RequestParam("pageSize") Long pageSize,
                                                                        @RequestParam(value = "lastName", required = false) String lastName,
                                                                        @RequestParam(value = "employeeNum", required = false) String employeeNum);

    /**
     * 获取企业人员基本信息
     *
     * @param personId
     * @param hrOrganizationId
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "获取企业人员基本信息")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personId", value = "人员id", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "hrOrganizationId", value = "企业组织id", dataType = "Long", dataTypeClass = Long.class),
    })
    @GetMapping(value = "/queryInternalPersonInfo")
    ResponseData<PersonResponse> getQueryInternalPersonInfo(@RequestParam("personId") Long personId,
                                                            @RequestParam(value = "hrOrganizationId", required = false) Long hrOrganizationId);

    /**
     * 查询从iMIS同步得到的人员库
     *
     * @param offset
     * @param pageSize
     * @param lastName
     * @param employeeNum
     * @param hrJob
     * @param subOrganizationId
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "查询从iMIS同步得到的人员库")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "offset", value = "页码", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "pageSize", value = "每页行数", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "lastName", value = "姓名", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "employeeNum", value = "工号", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "hrJob", value = "职务", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "subOrganizationId", value = "二级组织id", dataType = "Long", dataTypeClass = Long.class)
    })
    @GetMapping(value = "/queryPersonSyncFromImisPagination")
    ResponseData<PaginationData> getQueryPersonSyncFromImisPagination(@RequestParam("offset") Long offset,
                                                                      @RequestParam("pageSize") Long pageSize,
                                                                      @RequestParam(value = "lastName", required = false) String lastName,
                                                                      @RequestParam(value = "employeeNum", required = false) String employeeNum,
                                                                      @RequestParam(value = "hrJob", required = false) String hrJob,
                                                                      @RequestParam(value = "subOrganizationId", required = false) Long subOrganizationId);

    /**
     * 查询从iMIS同步得到的二级组织树
     *
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "查询从iMIS同步得到的二级组织树")
    @GetMapping(value = "/querySubOrganizationSyncListFromImis")
    ResponseData<List<SubOrganizationSyncFromImisResponse>> getQuerySubOrganizationSyncListFromImis();

    /**
     * 从iMIS企业库中批量保存数据
     *
     * @param referencePersonIds
     * @param hrOrganizationId
     * @return
     */
    @ApiOperation(httpMethod = "POST", value = "从iMIS企业库中批量保存数据")
    @PostMapping(value = "/internal/batchSavePersonSyncFromImis")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "hrOrganizationId", value = "企业组织id", dataType = "Long", dataTypeClass = Long.class),
    })
    ResponseData<List<PersonSyncFromImisResponse>> postBatchSavePersonSyncFromImis(@RequestBody Long[] referencePersonIds,
                                                                                   @RequestParam(value = "hrOrganizationId") Long hrOrganizationId);

    /**
     * 从iMIS项目组织库中批量保存数据
     *
     * @param referencePersonIds    人员id
     * @param projectId             项目id
     * @param projectOrganizationId 项目组织id
     * @return ResponseData<List < PersonSyncFromImisResponse>>
     */
    @ApiOperation(httpMethod = "POST", value = "从iMIS项目组织库中批量保存数据")
    @PostMapping(value = "/internal/batchSavePersonSyncFromImisToProjectOrganization")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "projectId", value = "项目id", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "projectOrganizationId", value = "项目组织id", dataType = "Long", dataTypeClass = Long.class),
    })
    ResponseData<List<PersonSyncFromImisResponse>> postBatchSavePersonSyncFromImisToProjectOrganization(@RequestBody Long[] referencePersonIds,
                                                                                                        @RequestParam(value = "projectId") Long projectId,
                                                                                                        @RequestParam(value = "projectOrganizationId") Long projectOrganizationId);

    @ApiOperation(httpMethod = "GET", value = "根据姓名、登录名、手机号、获取相关人员id")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "lastName", value = "姓名", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "userName", value = "登录名", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "employeeNum", value = "工号", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "mobile", value = "手机号", dataType = "String", dataTypeClass = String.class)
    })
    @GetMapping(value = "/queryPersonIdsByLastNameAndUserNameAndMobile")
    ResponseData<List<Long>> getQueryPersonIdsByLastNameAndUserNameAndEmployeeNumAndMobile(@RequestParam(value = "lastName", required = false) String lastName,
                                                                                           @RequestParam(value = "userName", required = false) String userName,
                                                                                           @RequestParam(value = "employeeNum", required = false) String employeeNum,
                                                                                           @RequestParam(value = "mobile", required = false) String mobile);

    /**
     * 根据人员id数组获取人员基本信息
     *
     * @param personIds
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "根据人员id数组获取人员基本信息")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personIds", value = "人员id数组", dataType = "List", dataTypeClass = List.class),
    })
    @GetMapping(value = "/queryPersonSimpleList")
    ResponseData<List<PersonSimpleResponse>> getQueryPersonSimpleList(@RequestParam(value = "personIds") List<Long> personIds);

    /**
     * 用户管理界面查询用户分页
     *
     * @param offset
     * @param pageSize
     * @param lastName
     * @param userName
     * @param employeeNum
     * @param personType
     * @param status
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "用户管理界面查询用户分页")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "offset", value = "页码", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "pageSize", value = "每页行数", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "lastName", value = "姓名", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "userName", value = "用户名", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "employeeNum", value = "工号", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "personType", value = "人员类型", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "status", value = "状态", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "internal", value = "是否内部", dataType = "boolean", dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "query", name = "nonHrOrganizationId", value = "剔除企业组织Id", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "nonAllHrOrganization", value = "剔除全部企业组织Id", dataType = "Boolean", dataTypeClass = Boolean.class)
    })
    @GetMapping(value = "/queryPersonManagementPagination")
    ResponseData<PaginationData> getQueryPersonManagementPagination(@RequestParam("offset") Long offset,
                                                                    @RequestParam("pageSize") Long pageSize,
                                                                    @RequestParam(value = "lastName", required = false) String lastName,
                                                                    @RequestParam(value = "userName", required = false) String userName,
                                                                    @RequestParam(value = "employeeNum", required = false) String employeeNum,
                                                                    @RequestParam(value = "personType", required = false) String personType,
                                                                    @RequestParam(value = "status", required = false) String status,
                                                                    @RequestParam(value = "internal", required = false) Boolean internal,
                                                                    @RequestParam(value = "nonHrOrganizationId", required = false) Long nonHrOrganizationId,
                                                                    @RequestParam(value = "nonAllHrOrganization", required = false) boolean nonAllHrOrganization);

    /**
     * 获取人员详细信息
     *
     * @param personId
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "获取人员详细信息")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personId", value = "人员id", dataType = "Long", dataTypeClass = Long.class)
    })
    @GetMapping(value = "/queryPersonDetailInfo")
    ResponseData<PersonResponse> getQueryPersonDetailInfo(@RequestParam(value = "personId") Long personId);

    /**
     * 获取人员基本信息
     *
     * @param personId
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "获取人员基本信息")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personId", value = "人员id", dataType = "Long", dataTypeClass = Long.class)
    })
    @GetMapping(value = "/queryPersonInfo")
    ResponseData<PersonResponse> getQueryPersonInfo(@RequestParam("personId") Long personId);

    /**
     * 获取人员基本信息
     *
     * @param personId
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "获取人员基本信息")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personId", value = "人员id", dataType = "Long", dataTypeClass = Long.class)
    })
    @GetMapping(value = "/queryPersonInfoSkipToken")
    ResponseData<PersonResponse> getQueryPersonInfoSkipToken(@RequestParam("personId") Long personId);

    /**
     * 用户管理界面停用或启用人员状态
     *
     * @param personId
     * @param enable
     * @return
     */
    @ApiOperation(httpMethod = "PUT", value = "用户管理界面停用或启用人员状态")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personId", value = "人员id", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "enable", value = "用户状态", dataType = "Boolean", dataTypeClass = Boolean.class)
    })
    @PutMapping(value = "/editPersonStatus")
    ResponseData<Boolean> putEditPersonStatus(@RequestParam("personId") Long personId, @RequestParam("enable") boolean enable);

    /**
     * 用户管理界面删除人员信息与分配信息
     *
     * @param personId
     * @return
     */
    @ApiOperation(httpMethod = "DELETE", value = "用户管理界面删除人员信息与分配信息")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personId", value = "人员id", dataType = "Long", dataTypeClass = Long.class)
    })
    @DeleteMapping(value = "/deletePersonBasicAndAllAssignments")
    ResponseData<Boolean> deletePersonBasicAndAllAssignments(@RequestParam("personId") Long personId);

    /**
     * 获取用户顶部的三级组织切换信息
     *
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "获取用户顶部的三级组织切换信息")
    @GetMapping(value = "/getScopeTopPermission")
    @Deprecated
    ResponseData<ScopeTopPermissionResponse> getScopeTopPermission();

    /**
     * 获取现有的用户三级组织切换信息
     *
     * @return NodeInfoResponse
     */
    @ApiOperation(httpMethod = "GET", value = "获取现有的用户三级组织切换信息")
    @GetMapping(value = "/getScopeTopPermissionInfo")
    ResponseData<ScopeTopPermissionInfoResponse> getScopeTopPermissionInfo();

    /**
     * 登录时获取数据权限，并绑定全量
     *
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "登录时获取数据权限，并绑定全量")
    @GetMapping(value = "/getLoginScopeInitializeDataAndSubmit")
    ResponseData<ScopeTopPermissionResponse> getLoginScopeInitializeDataAndSubmit();

    /**
     * 选中所选的三级组织权限
     *
     * @return
     */
    @ApiOperation(httpMethod = "POST", value = "选中所选的三级组织权限")
    @PostMapping(value = "/submitScopeTopPermission")
    ResponseData<Boolean> postSubmitScopeTopPermission(@RequestBody ScopeTopPermissionRequest scopeTopPermissionRequest);

    /**
     * 根据当前企业组织id获取当前层级下的人员
     *
     * @param hrOrganizationId
     * @return
     */
    @ApiOperation(httpMethod = "GET", value = "根据当前企业组织id获取当前层级下的人员")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "hrOrganizationId", value = "企业组织id", dataType = "Long", dataTypeClass = Long.class)
    })
    @GetMapping(value = "/queryPersonSimpleByCurrentHrOrganizationId")
    ResponseData<List<PersonSimpleResponse>> getQueryPersonSimpleByCurrentHrOrganizationId(@RequestParam("hrOrganizationId") Long hrOrganizationId);


    /**
     * 获取项目中特定角色的人员
     *
     * @param projectId 项目id
     * @param roleIds   角色id列表
     * @return ResponseData<List < BidSectionResponse>>
     */
    @ApiOperation(httpMethod = "GET", value = "获取项目中特定角色的人员")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "projectId", value = "项目id", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "roleIds", value = "角色id列表", dataType = "List", dataTypeClass = List.class)
    })
    @GetMapping(value = "/getPersonInProjectWithRoleIds")
    ResponseData<List<PersonResponse>> getPersonInProjectWithRoleIds(@RequestParam("projectId") Long projectId, @RequestParam("roleIds") List<Long> roleIds);
    /**
     * 获取项目中的人员
     *
     * @param projectId 项目id
     * @return ResponseData<List<PersonResponse>>
     */
    @ApiOperation(httpMethod = "GET", value = "获取项目中的人员")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "projectId", value = "项目id", dataType = "Long", dataTypeClass = Long.class),
    })
    @GetMapping(value = "/getPersonInProject")
    ResponseData<List<PersonResponse>> getPersonInProject(@RequestParam("projectId") Long projectId);

    /**
     * 获取组织中特定角色的人员
     *
     * @param organizationId 组织id
     * @param roleIds        角色id列表
     * @return ResponseData<List < BidSectionResponse>>
     */
    @ApiOperation(httpMethod = "GET", value = "获取组织中特定角色的人员")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "organizationId", value = "组织id", dataType = "Long", dataTypeClass = Long.class),
            @ApiImplicitParam(paramType = "query", name = "roleIds", value = "角色id列表", dataType = "List", dataTypeClass = List.class)
    })
    @GetMapping(value = "/getPersonInOrganizationWithRoleIds")
    ResponseData<List<PersonResponse>> getPersonInOrganizationWithRoleIds(@RequestParam("organizationId") Long organizationId, @RequestParam("roleIds") List<Long> roleIds);

    /**
     * 获取人员所属的企业分配
     *
     * @param personId 角色id
     * @return ResponseData<List < Long>>
     */
    @ApiOperation(httpMethod = "GET", value = "获取人员所属的企业分配")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personId", value = "人员id", dataType = "Long", dataTypeClass = Long.class),
    })
    @GetMapping(value = "/getOrganizationIdWithPersonId")
    ResponseData<List<Long>> getOrganizationIdWithPersonId(@RequestParam("personId") Long personId);

    /**
     * 获取人员所属的企业分配
     *
     * @param personId 人员Id
     * @return ResponseData<List < InternalAssignmentResponse>>
     */
    @ApiOperation(httpMethod = "GET", value = "获取人员所属的企业分配")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personId", value = "人员id", dataType = "Long", dataTypeClass = Long.class),
    })
    @GetMapping(value = "/getInternalAssignmentWithPersonId")
    ResponseData<List<InternalAssignmentResponse>> getInternalAssignmentWithPersonId(@RequestParam("personId") Long personId);

    /**
     * 根据人员id数组获取人员基本信息
     *
     * @param personIds 人员ids
     * @return ResponseData<List < PersonSimpleResponse>>
     */
    @ApiOperation(httpMethod = "GET", value = "根据人员id数组获取人员基本信息")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "personIds", value = "人员id数组", dataType = "List", dataTypeClass = List.class),
    })
    @GetMapping(value = "/queryPersons")
    ResponseData<List<PersonSimpleResponse>> getQueryPersons(@RequestParam(value = "personIds") List<Long> personIds);

    /**
     * 批量保存已存在人员
     *
     * @param batchExistingPersonRequest
     * @return
     */
    @ApiOperation(httpMethod = "POST", value = "批量保存已存在人员")
    @PostMapping(value = "/batchAddExistingPerson")
    ResponseData<Boolean> postBatchAddExistingPerson(@Validated @RequestBody BatchExistingPersonRequest batchExistingPersonRequest);

    /**
     * 获取 人员 列表
     *
     * @param personListQueryRequest 人员列表查询
     * @return ResponseData<List<PersonResp>>
     */
    @ApiOperation(httpMethod = "POST", value = "查询 人员 列表")
    @PostMapping(value = "/getPersonList")
    ResponseData<List<PersonResp>> getPersonList(@Validated @RequestBody PersonListQueryRequest personListQueryRequest);

    /**
     * 获取 人员（详情） 列表
     *
     * @param personListQueryRequest 人员列表查询
     * @return ResponseData<List < BidSectionResponse>>
     */
    @ApiOperation(httpMethod = "POST", value = "获取 人员（详情） 列表")
    @PostMapping(value = "/getPersonDetailList")
    ResponseData<List<PersonDetailResp>> getPersonDetailList(@Validated @RequestBody PersonListQueryRequest personListQueryRequest);

    /**
     * 获取 人员 列表（不要token）
     *
     * @param personListQueryRequest 人员列表查询（不要token）
     * @return ResponseData<List < BidSectionResponse>>
     */
    @ApiOperation(httpMethod = "POST", value = "查询 人员 列表（无权限）")
    @PostMapping(value = "/getPersonListWithoutToken")
    ResponseData<List<PersonResp>> getPersonListWithoutToken(@Validated @RequestBody PersonListQueryRequest personListQueryRequest);

    /**
     * 获取 人员与组织分配 列表
     *
     * @param organizationAssignmentListQueryRequest 人员与组织分配列表
     * @return ResponseData<List < BidSectionResponse>>
     */
    @ApiOperation(httpMethod = "POST", value = "查询 人员与组织分配 列表")
    @PostMapping(value = "/getOrganizationAssignmentList")
    ResponseData<List<OrganizationAssignmentResp>> getOrganizationAssignmentList(@RequestBody OrganizationAssignmentListQueryRequest organizationAssignmentListQueryRequest);

    /**
     * 获取 人员与组织分配 列表
     *
     * @param organizationAssignmentListQueryRequest 人员与组织分配列表
     * @return ResponseData<List < BidSectionResponse>>
     */
    @ApiOperation(httpMethod = "POST", value = "查询 人员与组织分配 列表（无权限）")
    @PostMapping(value = "/getOrganizationAssignmentListWithoutToken")
    ResponseData<List<OrganizationAssignmentResp>> getOrganizationAssignmentListWithoutToken(@RequestBody OrganizationAssignmentListQueryRequest organizationAssignmentListQueryRequest);

}
